/**
* uni-app缓存 支持过期时间
* 若存储内容为对象 仅支持能够通过 JSON.stringify 序列化的对象
*/
export default {

	//设置缓存 过期时间单位为秒
	set(name, value, expire = 24 * 3600 * 20) {
		//毫秒
		expire = (new Date()).getTime() + expire * 1000
		const storage = {
			v: value,
			exp: expire
		}
		try {
			uni.setStorageSync(name, storage)
		} catch (e) {
			console.log(e)
		}
	},
	//获取缓存
	get(name) {
		try {
			const storage = uni.getStorageSync(name)
			if (storage.exp < (new Date()).getTime()) {
				uni.removeStorageSync(name)
			return
			} else {
				return storage
			}
		} catch (e) {
			console.log(e)
		}

	}
}




// class localStorage {

//   constructor(props) {
//     this.props = props || {}
//     this.source = this.props.source || window.localStorage
//     this.initRun();
//   }
//   initRun(){
//     const reg = new RegExp("__expires__");
//     let data = this.source;
//     let list = Object.keys(data);
//     if(list.length > 0){
//       list.map((key,v)=>{
//         if( !reg.test(key )){
//           let now = Date.now();
//           let expires = data[`${key}__expires__`]||Date.now+1;
//           if (now >= expires ) {
//             this.remove(key);
//           };
//         };
//         return key;
//       });
//     };
//   }

//   set(key, value, expired) {
//     /*
//     * set 存储方法
//     * @ param {String}     key 键
//     * @ param {String}     value 值，
//     * @ param {String}     expired 过期时间，以毫秒为单位，非必须
//     */
//     let source = this.source;
//     source[key] = JSON.stringify(value);
//     if (expired){
//       source[`${key}__expires__`] = Date.now() + expired
//     };
//     return value;
//   }

//   get(key) {
//     /*
//     * get 获取方法
//     * @ param {String}     key 键
//     * @ param {String}     expired 存储时为非必须字段，所以有可能取不到，默认为 Date.now+1
//     */
//     const source = this.source,
//       expired = source[`${key}__expires__`]||Date.now+1;
//     const now = Date.now();

//     if ( now >= expired ) {
//       this.remove(key);
//       return;
//     }
//     const value = source[key] ? JSON.parse(source[key]) : source[key];
//     return value;
//   }

//   remove(key) {
//     const data = this.source,
//       value = data[key];
//     delete data[key];
//     delete data[`${key}__expires__`];
//     return value;
//   }

// }

// const local = new localStorage();
// export default local;
